package JVM.chapter04;

/**
 * debug模式运行，查看idea的 栈帧
 *
 * 栈帧结束的方式有两种：
 *   1. 正常return
 *   2. 抛出异常
 *   都会导致当前栈帧被弹出
 */
public class StackFrameTest {

    public static void main(String[] args) {
        StackFrameTest stackFrameTest = new StackFrameTest();

        stackFrameTest.method1();
        System.out.println("main 方法执行即将结束");
    }

    public void method1(){
        System.out.println("method1 开始执行");
        method2();
        System.out.println("method1 结束执行");
        System.out.println(10 / 0);  // todo method1被当前栈 弹栈
    }

    public double method2(){
        int i = 0;
        System.out.println("method2 开始执行");
        double j = method3();
        System.out.println("method2 结束执行");
        return i + j;
    }

    public int method3(){
        System.out.println("method3 开始执行");
        System.out.println("method3 结束执行");
        return 2;
    }
}
